package GUI;

import java.awt.Color;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.GridLayout;

import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.net.MalformedURLException;

import Applikationslogik.*;


/**
 *
 * @author Rene
 */
public class PersonAnlegen implements ActionListener  {

    private Verwaltung v2;

     // Das Außenrum
     JFrame person_anlegen;
     JPanel panel;
     JPanel panel_button;
     
     // Die Textfeldbeschreibungen
     JLabel name;
     JLabel vorname;
     JLabel telefon;
     JLabel email;
     JLabel raum;

     // Die Eingabemaske
     JTextField eingabe_vorname;
     JTextField eingabe_nachname;
     JTextField eingabe_telefon;
     JTextField eingabe_email;
     JTextField eingabe_raum;

     // Der Anlegenbutton
     JButton anlegen;


     /**
      * Objekt wird in die Verwaltung geschrieben
      * @param verwaltung
      */
     public PersonAnlegen(Verwaltung verwaltung) {

         v2 = verwaltung;
         person_anlegen = new JFrame("Person anlegen");
         panel = new JPanel();

         // Jetzt werden die Elemente gemalt
         name = new JLabel("Ihr Nachname: ");
         vorname = new JLabel("Ihr Vorname: ");
         telefon = new JLabel("Ihre Telefonnummer: ");
         email = new JLabel("Ihre E-Mail: ");
         raum = new JLabel("Ihre Raumnummer: ");

         eingabe_vorname = new JTextField("", 20);
         eingabe_nachname = new JTextField("", 20);
         eingabe_telefon = new JTextField();
         eingabe_telefon.setDocument(new IntegerCheck());
         eingabe_email = new JTextField("", 20);
         eingabe_raum = new JTextField();
         eingabe_raum.setDocument(new IntegerCheck());

         // Button wird gemacht und ActionListener gesetzt
         anlegen = new JButton("Person anlegen");
         anlegen.addActionListener(this);

         // Gridlayout

         panel.setLayout(new GridLayout(6,2));

         // Panel wird gemalt

         panel.add(name);
         panel.add(eingabe_nachname);
         panel.add(vorname);
         panel.add(eingabe_vorname);
         panel.add(telefon);
         panel.add(eingabe_telefon);
         panel.add(email);
         panel.add(eingabe_email);
         panel.add(raum);
         panel.add(eingabe_raum);
         panel.add(anlegen);
         
         
         person_anlegen.add(panel);
         person_anlegen.setSize(400, 300);
         person_anlegen.setVisible(true);
 
     }



    public void actionPerformed(ActionEvent object) {
        if (object.getSource() == anlegen){
               System.out.println("Objekt wird an Applikationsschicht übergeben.");

                //Überprüfung ob alle Felder ausgefüllt sind
                 if(eingabe_nachname.getText().equals("") || eingabe_vorname.getText().equals("") || eingabe_telefon.getText().equals("") || eingabe_email.getText().equals("") || eingabe_raum.getText().equals("") )
                 JOptionPane.showMessageDialog(panel, "Bitte alle Felder ausfüllen!");

                 else {

                       try {
                            // Falls alle Felder ausgefüllt worden sind, wird die Methode createPerson ausgeführt, mögliche Fehler werden aufgefangen
                            v2.createPerson(1, Integer.parseInt(eingabe_raum.getText()), eingabe_nachname.getText(), eingabe_vorname.getText(), Integer.parseInt(eingabe_telefon.getText()), true, eingabe_email.getText());
                            JOptionPane.showMessageDialog(panel, "Person angelegt.");
                            person_anlegen.dispose(); // Frame schließen
                        }
                       catch (RemoteException re) {

                            // Exception abfangen und anzeigen via PopUp
                            System.out.println("RemoteException");
                            System.out.println(re);
                            JOptionPane.showMessageDialog(panel, "Fehler: " + re.getCause());
                     }
                 }
          }
    }
}